home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 684 / 684.xpi / chrome / fireftp.jar / content / js / dialogs / properties.js < prev   
Text File  |  2008-01-12  |  11KB  |  281 lines

  1. var gInitialPermissions;
  2. var gStrbundle;
  3. var gArgs;
  4. var gFireFTPUtils = Components.classes['@nightlight.ws/fireftputils;1'].getService(Components.interfaces.nsIFireFTPUtils);
  5.  
  6. function init() {
  7.   gStrbundle = $("strings");
  8.   gArgs      = window.arguments[0];
  9.  
  10.   setTimeout("$('properties').getButton('accept').focus()", 0);
  11.  
  12.   if (gArgs.multipleFiles) {
  13.     $('thumbrow').collapsed = true;
  14.     multipleFiles();
  15.     return;
  16.   }
  17.  
  18.   $('path').value = gArgs.path;
  19.   $('name').value = gArgs.leafName;
  20.   $('date').value = gArgs.date;
  21.  
  22.   if (gArgs.recursiveFolderData) {
  23.     $('size').value     = parseSize(gArgs.recursiveFolderData.nSize)
  24.                         + (gArgs.recursiveFolderData.nSize > 1023 ? "  (" + gStrbundle.getFormattedString("bytes", [commas(gArgs.recursiveFolderData.nSize)]) + ")" : "");
  25.     $('contains').value = gStrbundle.getFormattedString("files", [commas(parseInt(gArgs.recursiveFolderData.nFiles))]) + ", "
  26.                         + gStrbundle.getFormattedString("folders", [commas(parseInt(gArgs.recursiveFolderData.nFolders))]);
  27.  
  28.     if (gArgs.applyTo && gArgs.applyTo.type) {
  29.       $('thisprop').checked    = gArgs.applyTo.thisFile;
  30.       $('foldersprop').checked = gArgs.applyTo.folders;
  31.       $('filesprop').checked   = gArgs.applyTo.files;
  32.     } else {
  33.       $('multipleprops').collapsed = true;
  34.     }
  35.   } else {
  36.     $('size').value              = parseSize(gArgs.fileSize) + (gArgs.fileSize > 1023 ? "  (" + gStrbundle.getFormattedString("bytes", [commas(gArgs.fileSize)]) + ")" : "");
  37.     $('containsrow').collapsed   = true;
  38.     $('multipleprops').collapsed = true;
  39.   }
  40.  
  41.   if (gArgs.origPermissions) {
  42.     $('readowner').checked   = gArgs.origPermissions.charAt(1) != '-';
  43.     $('writeowner').checked  = gArgs.origPermissions.charAt(2) != '-';
  44.     $('execowner').checked   = gArgs.origPermissions.charAt(3) != '-';
  45.     $('readgroup').checked   = gArgs.origPermissions.charAt(4) != '-';
  46.     $('writegroup').checked  = gArgs.origPermissions.charAt(5) != '-';
  47.     $('execgroup').checked   = gArgs.origPermissions.charAt(6) != '-';
  48.     $('readpublic').checked  = gArgs.origPermissions.charAt(7) != '-';
  49.     $('writepublic').checked = gArgs.origPermissions.charAt(8) != '-';
  50.     $('execpublic').checked  = gArgs.origPermissions.charAt(9) != '-';
  51.  
  52.     if (gArgs.origPermissions.charAt(3) == 's') {
  53.       $('suid').checked      = true;
  54.     }
  55.  
  56.     if (gArgs.origPermissions.charAt(3) == 'S') {
  57.       $('suid').checked      = true;
  58.       $('execowner').checked = false;
  59.     }
  60.  
  61.     if (gArgs.origPermissions.charAt(6) == 's') {
  62.       $('guid').checked      = true;
  63.     }
  64.  
  65.     if (gArgs.origPermissions.charAt(6) == 'S') {
  66.       $('guid').checked      = true;
  67.       $('execgroup').checked = false;
  68.     }
  69.  
  70.     if (gArgs.origPermissions.charAt(9) == 't') {
  71.       $('sticky').checked     = true;
  72.     }
  73.  
  74.     if (gArgs.origPermissions.charAt(9) == 'T') {
  75.       $('sticky').checked     = true;
  76.       $('execpublic').checked = false;
  77.     }
  78.  
  79.     change();
  80.     gInitialPermissions = $('manual').value;
  81.     addEventListener("CheckboxStateChange", change, true);
  82.   } else {
  83.     $('permrow').collapsed = true;
  84.   }
  85.  
  86.   if (gArgs.writable != 'disabled') {
  87.     $('readonly').checked   = !gArgs.writable;
  88.     $('hidden').checked     =  gArgs.hidden;
  89.     $('readonly').disabled  =  gArgs.isLinuxType;
  90.     $('hidden').disabled    =  true;
  91.     $('userrow').collapsed  =  true;
  92.     $('grouprow').collapsed =  true;
  93.   } else {
  94.     $('attrrow').collapsed  =  true;
  95.     $('user').value         =  gArgs.user;
  96.     $('group').value        =  gArgs.group;
  97.   }
  98.  
  99.   if (gArgs.isDirectory) {
  100.     $('fileIcon').setAttribute("class", "isFolder");
  101.   } else if (gArgs.isSymlink) {
  102.     $('fileIcon').setAttribute("class", "isLink");
  103.   } else {
  104.     $('fileIcon').src = "moz-icon://file:///" + gArgs.path + "?size=32";
  105.   }
  106.  
  107.   if (gArgs.isSymlink) {
  108.     $('path').value += " -> " + gArgs.symlink;
  109.   }
  110.  
  111.   $('hashrow').collapsed = gArgs.isDirectory || (!gArgs.isLocal && !gArgs.featXMD5 && !gArgs.featXSHA1) || gArgs.recursiveFolderData || !gArgs.fileSize;
  112.  
  113.   if (!gArgs.isLocal) {
  114.     $('md5btn').collapsed    = !gArgs.featXMD5;
  115.     $('sha1btn').collapsed   = !gArgs.featXSHA1;
  116.     $('sha256btn').collapsed = true;
  117.     $('sha384btn').collapsed = true;
  118.     $('sha512btn').collapsed = true;
  119.   }
  120.  
  121.   if (gArgs.recursiveFolderData == null && (gArgs.isLocal || gArgs.webHost)) {
  122.     var leafName  = gArgs.leafName;
  123.     var extension = leafName.lastIndexOf(".") != -1 ? leafName.substring(leafName.lastIndexOf(".") + 1, leafName.length).toLowerCase() : "";
  124.  
  125.     if (gArgs.webHost && gArgs.webHost.indexOf("http://") != 0) {
  126.       gArgs.webHost = "http://" + gArgs.webHost;
  127.     }
  128.  
  129.     var webPath = gArgs.path;
  130.     if (gArgs.prefix && gArgs.path.indexOf(gArgs.prefix) == 0) {
  131.       webPath = webPath.substring(gArgs.prefix.length);
  132.     }
  133.  
  134.     if (gArgs.webHost) {
  135.       $('webpath').value = gArgs.webHost + webPath;
  136.     } else {
  137.       $('webpathrow').collapsed = true;
  138.     }
  139.  
  140.     if (extension == "jpg" || extension == "bmp" || extension == "gif" || extension == "jpeg" || extension == "jfif"
  141.      || extension == "png" || extension == "jng" || extension == "xbm" || extension == "mng"  || extension == "jpe") {
  142.       $('webbox').collapsed = true;
  143.       $('thumbnail').setAttribute("src", (gArgs.isLocal ? ("file:///" + gArgs.path) : (gArgs.webHost + webPath)));
  144.     } else if (extension == "html"  || extension == "htm" || extension == "shtml" || extension == "xml"  || extension == "xhtml" || extension == "wml"
  145.             || extension == "svg"   || extension == "xul" || extension == "hdml" || extension == "dhtml" || extension == "mathml") {
  146.       $('thumbrow').collapsed = true;
  147.  
  148.       // XXX: this has become broken since Firefox 2.0.0.5 - and I don't know how to work around it.  I'm open to ideas...
  149.  
  150.       //$('imagebox').collapsed = true;
  151.       //var win = $('hiddenBrowser').contentWindow;
  152.       //win.addEventListener("load", browserLoad, false);
  153.       //setTimeout("browserLoad()", 1000);
  154.       //$('hiddenBrowser').loadURI((gArgs.isLocal ? ("file:///" + gArgs.path) : (gArgs.webHost + webPath)), null, null);
  155.     } else {
  156.       $('thumbrow').collapsed = true;
  157.     }
  158.   } else {
  159.     $('thumbrow').collapsed   = true;
  160.     $('webpathrow').collapsed = true;
  161.   }
  162. }
  163.  
  164. // XXX: this has become broken since Firefox 2.0.0.5 - and I don't know how to work around it.  I'm open to ideas...
  165. /*function browserLoad(event) {
  166.   $('loadinglabel').collapsed = true;
  167.  
  168.   var canvas  = $("canvas");                 // this bit of code inspired from Ted Mielczarek's Tab Preview extension
  169.   var ctx     = canvas.getContext("2d");     // http://ted.mielczarek.org/code/mozilla/tabpreview/
  170.   var browser = $('hiddenBrowser');
  171.   var win     = browser.contentWindow;
  172.   var w       = browser.width;
  173.   var h       = browser.height;
  174.   var canvasW = canvas.width;
  175.   var canvasH = canvas.height;
  176.   ctx.scale(canvasW / w, canvasH / h);
  177.   ctx.drawWindow(win, 0, 0, w, h, "rgb(255,255,255)");
  178. }*/
  179.  
  180. function viewImage() {
  181.   if (gArgs.webHost && gArgs.webHost.indexOf("http://") != 0) {
  182.     gArgs.webHost = "http://" + gArgs.webHost;
  183.   }
  184.  
  185.   var webPath = gArgs.path;
  186.  
  187.   if (gArgs.prefix && gArgs.path.indexOf(gArgs.prefix) == 0) {
  188.     webPath = webPath.substring(gArgs.prefix.length);
  189.   }
  190.  
  191.   runInFirefox((gArgs.isLocal ? ("file:///" + gArgs.path) : (gArgs.webHost + webPath)));
  192. }
  193.  
  194. function change() {
  195.   $('manual').value = (4 * $('suid').checked       + 2 * $('guid').checked        + 1 * $('sticky').checked).toString()
  196.                     + (4 * $('readowner').checked  + 2 * $('writeowner').checked  + 1 * $('execowner').checked).toString()
  197.                     + (4 * $('readgroup').checked  + 2 * $('writegroup').checked  + 1 * $('execgroup').checked).toString()
  198.                     + (4 * $('readpublic').checked + 2 * $('writepublic').checked + 1 * $('execpublic').checked).toString();
  199. }
  200.  
  201. function doOK() {
  202.   if ("returnVal" in gArgs) {
  203.     gArgs.returnVal = true;
  204.     gArgs.writable  = !$('readonly').checked;
  205.   }
  206.  
  207.   if (!gInitialPermissions) {
  208.     return true;
  209.   }
  210.  
  211.   if (gArgs.multipleFiles) {
  212.     gArgs.permissions       = $('manual').value;
  213.     gArgs.applyTo.folders   = $('foldersprop').checked;
  214.     gArgs.applyTo.files     = $('filesprop').checked;
  215.   } else if (gInitialPermissions != $('manual').value || $('foldersprop').checked || $('filesprop').checked) {
  216.     gArgs.permissions = $('manual').value;
  217.  
  218.     if (gArgs.applyTo) {
  219.       gArgs.applyTo.thisFile = $('thisprop').checked;
  220.       gArgs.applyTo.folders  = $('foldersprop').checked;
  221.       gArgs.applyTo.files    = $('filesprop').checked;
  222.     }
  223.   }
  224.  
  225.   return true;
  226. }
  227.  
  228. function multipleFiles() {
  229.   $('pathrow').collapsed      = true;
  230.   $('webpathrow').collapsed   = true;
  231.   $('daterow').collapsed      = true;
  232.   $('containsrow').collapsed  = true;
  233.   $('userrow').collapsed      = true;
  234.   $('grouprow').collapsed     = true;
  235.   $('attrrow').collapsed      = true;
  236.   $('hashrow').collapsed      = true;
  237.   $('thisprop').collapsed     = true;
  238.  
  239.   if (gArgs.recursiveFolderData.type == "remote") {
  240.     change();
  241.     gInitialPermissions = $('manual').value;
  242.     addEventListener("CheckboxStateChange", change, true);
  243.  
  244.     $('foldersprop').checked = gArgs.applyTo.folders;
  245.     $('filesprop').checked   = gArgs.applyTo.files;
  246.   } else {
  247.     $('permrow').collapsed = true;
  248.   }
  249.  
  250.   $('fileIcon').setAttribute("class", "isMultiple");
  251.   $('name').value = gStrbundle.getFormattedString("files", [commas(parseInt(gArgs.recursiveFolderData.nFiles))]) + ", "
  252.                   + gStrbundle.getFormattedString("folders", [commas(parseInt(gArgs.recursiveFolderData.nFolders))]);
  253.   $('size').value = parseSize(gArgs.recursiveFolderData.nSize)
  254.                   + (gArgs.recursiveFolderData.nSize > 1023 ? "  (" + gStrbundle.getFormattedString("bytes", [commas(gArgs.recursiveFolderData.nSize)]) + ")": "");
  255. }
  256.  
  257. function generateHashes(hash) {
  258.   $(hash + 'deck').selectedIndex = 0;
  259.   $(hash + 'meter').setAttribute("mode", "undetermined");
  260.   $(hash + 'row').collapsed = false;
  261.  
  262.   if (!gArgs.isLocal) {
  263.     var func = function(zeHash) {
  264.       $(hash).value             = zeHash;
  265.       $(hash + 'deck').selectedIndex = 1;
  266.       $(hash + 'meter').setAttribute("mode", "determined");
  267.     };
  268.  
  269.     gArgs.gFtp.addEventQueue(hash == 'md5' ? "XMD5" : "XSHA1", gArgs.leafName, func);
  270.     gArgs.gFtp.writeControlWrapper();
  271.     return;
  272.   }
  273.  
  274.   var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
  275.   file.initWithPath(gArgs.path);
  276.  
  277.   $(hash).value                  = gFireFTPUtils.generateHash(file, hash);
  278.   $(hash + 'deck').selectedIndex = 1;
  279.   $(hash + 'meter').setAttribute("mode", "determined");
  280. }
  281.